//----------------------------------------------------------------------------
//  ,-.
// /_\___ ,   Ninja Framework
// '  ___\    (C) Riccardo Capra - http://riccar.do
//  //   \\
//----------------------------------------------------------------------------
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//----------------------------------------------------------------------------

#include "NjExample01.h"
#include "NjSharedSyncObjectConstants.h"

//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjDummySyncObject>::ms_szSyncObject="NjDummySyncObject";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjDummySyncObject>::ms_eType=TYPE_DUMMY;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjDummySyncObject>::ms_eCreationRow=NjSynchronizationStats::NJ_DUMMY_SYNC_OBJECT;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjDummySyncObject>::ms_eLockRow=NjSynchronizationStats::NJ_DUMMY_SYNC_OBJECT;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjMutex>::ms_szSyncObject="NjMutex";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjMutex>::ms_eType=TYPE_NORMAL;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjMutex>::ms_eCreationRow=NjSynchronizationStats::NJ_MUTEX;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjMutex>::ms_eLockRow=NjSynchronizationStats::NJ_MUTEX;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjRecursiveMutex>::ms_szSyncObject="NjRecursiveMutex";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjRecursiveMutex>::ms_eType=TYPE_RECURSIVE;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRecursiveMutex>::ms_eCreationRow=NjSynchronizationStats::NJ_RECURSIVE_MUTEX;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRecursiveMutex>::ms_eLockRow=NjSynchronizationStats::NJ_RECURSIVE_MUTEX;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjSemaphore>::ms_szSyncObject="NjSemaphore";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjSemaphore>::ms_eType=TYPE_SEMAPHORE;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjSemaphore>::ms_eCreationRow=NjSynchronizationStats::NJ_SEMAPHORE;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjSemaphore>::ms_eLockRow=NjSynchronizationStats::NJ_SEMAPHORE;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock>::ms_szSyncObject="NjRWLock";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock>::ms_eType=TYPE_NORMAL;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock>::ms_eCreationRow=NjSynchronizationStats::NJ_RW_LOCK;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock>::ms_eLockRow=NjSynchronizationStats::NJ_RW_LOCK;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Read>::ms_szSyncObject="NjRWLock::Read";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Read>::ms_eType=TYPE_RECURSIVE;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Read>::ms_eCreationRow=NjSynchronizationStats::NJ_RW_LOCK;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Read>::ms_eLockRow=NjSynchronizationStats::NJ_RW_LOCK_READ;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Write>::ms_szSyncObject="NjRWLock::Write";
template<> NjSharedSyncObjectConstants::Type const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Write>::ms_eType=TYPE_NORMAL;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Write>::ms_eCreationRow=NjSynchronizationStats::NJ_RW_LOCK;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjRWLock, NjRWLock::Write>::ms_eLockRow=NjSynchronizationStats::NJ_RW_LOCK_WRITE;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjEvent>::ms_szSyncObject="NjEvent";
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjEvent>::ms_eCreationRow=NjSynchronizationStats::NJ_EVENT;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjEvent>::ms_eLockRow=NjSynchronizationStats::NJ_EVENT;
//----------------------------------------------------------------------------
template<> NjCharA const * const NjSharedSyncObjectConstants::Query<NjPulseEvent>::ms_szSyncObject="NjPulseEvent";
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjPulseEvent>::ms_eCreationRow=NjSynchronizationStats::NJ_PULSE_EVENT;
template<> NjSynchronizationStats::Row const NjSharedSyncObjectConstants::Query<NjPulseEvent>::ms_eLockRow=NjSynchronizationStats::NJ_PULSE_EVENT;
//----------------------------------------------------------------------------
